// 对外暴露
// meta字段是用来设置一些自定义信息的，可以在页面组件或者路由钩子函数中使用,用来存储一些额外的信息
// 路由懒加载的主要作用是将 路由对应的组件打包成一个个的js代码块。只有在这个路由被访问到的时候，才会加载对应组件的代码块
export default [
  // 首页页面
  { path: '/home', component: () => import('@/pages/Home'), meta: { show: true } },
  // 登录页面
  { path: '/login', component: () => import('@/pages/Login/Login.vue'), meta: { show: false } },
  // props: true 开启 props 传参
  // 注册页面
  { path: '/register', component: () => import('@/pages/Register/Register.vue'), meta: { show: false } },
  // 加一个 ？ 表示 params 参数可传可不传
  // 搜索页面
  { path: '/search', component: () => import('@/pages/search/Search.vue'), meta: { show: true }, name: 'search' },
  // 商品详情页面
  { path: '/detail/:skuid', component: () => import('@/pages/Detail/Detail.vue'), meta: { show: true } },
  // 添加购物车页面
  { path: '/addcartsuccess', component: () => import('@/pages/AddCartSuccess/AddCartSuccess.vue'), meta: { show: true }, name: 'addcartsuccess' },
  // 购物车页面
  { path: '/shopcart', component: () => import('@/pages/ShopCart/ShopCart.vue'), meta: { show: true } },
  // 订单页面
  {
    path: '/trade',
    component: () => import('@/pages/Trade/Trade.vue'),
    meta: { show: true },
    /* 只能从购物车界面, 才能跳转到交易界面 */
    beforeEnter (to, from, next) {
      // 去交易页面，必须从购物车跳转
      if (from.path === '/shopcart') {
        next()
      } else {
        // next(false): 中断当前的导航。如果浏览器的 URL 改变了
        // (可能是用户手动或者浏览器后退按钮)，那么 URL 地址会重置到 from 路由对应的地址
        next('/shopcart')
      }
    }
  },
  // 订单支付页面
  {
    path: '/pay',
    component: () => import('@/pages/Pay/Pay.vue'),
    meta: { show: true },
    /* 只能从交易页面, 才能跳转到支付页面 */
    beforeEnter (to, from, next) {
      if (from.path === '/trade') {
        next()
      } else {
        next('/trade')
      }
    }
  },
  // 订单支付成功页面
  {
    path: '/paysuccess',
    component: () => import('@/pages/PaySuccess/paySuccess.vue'),
    meta: { show: true },
    /* 只能从支付页面, 才能跳转到支付成功页面 */
    beforeEnter (to, from, next) {
      if (from.path === '/pay') {
        next()
      } else {
        next(false)
      }
    }
  },
  // 查看订单页面
  {
    path: '/center',
    component: () => import('@/pages/Center/Center.vue'),
    meta: { show: true },
    // 二级路由组件
    children: [
      {
        // path: '/center/myorder',
        path: 'myorder',
        component: () => import('@/pages/Center/myOrder/myOrder.vue')
      },
      {
        path: 'grouporder',
        component: () => import('@/pages/Center/groupOrder/groupOrder.vue')
      },
      {
        path: '',
        redirect: 'myorder'
      }
    ]
  },
  // redirect 路由重定向 默认展示 home 首页
  { path: '/', redirect: 'home' }
]
